package com.exampl.health.util;

import com.exampl.health.entity.User;

import java.util.regex.Pattern;

/**
 * 参数验证工具类
 */
public class ValidationUtil {

    // 用户名正则：4-16位字母、数字、下划线
    private static final String USERNAME_REGEX = "^[a-zA-Z0-9_]{4,16}$";

    // 密码正则：6-18位字母、数字、特殊符号
    private static final String PASSWORD_REGEX = "^[a-zA-Z0-9@#$%^&+=]{6,18}$";

    // 邮箱正则
    private static final String EMAIL_REGEX = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";

    /**
     * 验证用户参数
     * @param user 用户对象
     * @return 是否验证通过
     */
    public static boolean validateUser(User user) {
        if (user == null) {
            return false;
        }

        // 验证用户名
        if (user.getUsername() == null || !Pattern.matches(USERNAME_REGEX, user.getUsername())) {
            return false;
        }

        // 验证密码
        if (user.getPassword() == null || !Pattern.matches(PASSWORD_REGEX, user.getPassword())) {
            return false;
        }

        // 验证邮箱
        if (user.getEmail() == null || !Pattern.matches(EMAIL_REGEX, user.getEmail())) {
            return false;
        }

        return true;
    }

    /**
     * 验证用户名格式
     * @param username 用户名
     * @return 是否验证通过
     */
    public static boolean validateUsername(String username) {
        return username != null && Pattern.matches(USERNAME_REGEX, username);
    }

    /**
     * 验证密码格式
     * @param password 密码
     * @return 是否验证通过
     */
    public static boolean validatePassword(String password) {
        return password != null && Pattern.matches(PASSWORD_REGEX, password);
    }

    /**
     * 验证邮箱格式
     * @param email 邮箱
     * @return 是否验证通过
     */
    public static boolean validateEmail(String email) {
        return email != null && Pattern.matches(EMAIL_REGEX, email);
    }
}